Generating Dynamic Program Analysis Tools
نویسنده
چکیده
Sophisticated instrumentation-based systems exist for building dynamic analysis tools but to use these systems a developer must write the instrumentation and analysis code by hand. This paper describes how analysis tools can be generated automatically by specifying analysis algorithms using attribute grammars based on the static and dynamic structure of the program being analysed. Using methods similar to those used to generate compilers, this approach enables implicit storage allocation for analysis data, automatic sequencing of analysis steps and transparently supports a variety of data sources and independence from the underlying implementation technology. Furthermore, analysis algorithms can be described in a modular way, enabling reuse. To demonstrate the approach the paper describes the Wyong system that generates dynamic analysis tools from specifications. An example analysis module specification is described and its reuse is illustrated. Wyong is based on the Eli compiler generation system and the ATOM program instrumentation system. To avoid having to build extremely large trees describing the dynamic structure of a program, Wyong automatically generates instrumentation code for ATOM. Combined with other modules generated by Eli, the ATOM-instrumented binary evaluates the specified analysis attribute computations as it executes. Thus the benefits of a specification-based method are combined with the efficiency of an instrumentation-based implementation.
منابع مشابه
Enabling Modularity and Re-use in Dynamic Program Analysis Tools for the Java Virtual Machine
Dynamic program analysis tools based on code instrumentation serve many important software engineering tasks such as profiling, debugging, testing, program comprehension, and reverse engineering. Unfortunately, constructing new analysis tools is unduly difficult, because existing frameworks offer little or no support to the programmer beyond the incidental task of instrumentation. We observe th...
متن کاملSoftware Streams: Big Data Challenges in Dynamic Program Analysis
Dynamic program analysis encompasses the development of techniques and tools for analyzing computer software by exploiting information gathered from a program at runtime. The impressive amounts of data collected by dynamic analysis tools require efficient indexing and compression schemes, as well as on-line algorithmic techniques for mining relevant information on-the-fly in order to identify f...
متن کاملDynamic Analysis from the Bottom Up
Changes in the way software is written and deployed today render static analysis increasingly ineffective. Unfortunately, this makes both traditional program optimization and software tools less useful. On the other hand, this also means that the role and importance of dynamic analysis is continuing to increase. In the future, we believe dynamic analysis will be successful both in program optim...
متن کاملByte Code Engineering
The term “Java” is used to denote two different concepts: the language itself and the related execution environment, the Java Virtual Machine (JVM), which executes byte code instructions. Several research projects deal with byte code-generating compilers or the implementation of new features via byte code transformations. Examples are code optimization, the implementation of parameterized types...
متن کاملDynamic program analysis - Reconciling developer productivity and tool performance
Dynamic program analysis tools serve many important software engineering tasks such as profiling, debugging, testing, program comprehension, and reverse engineering. Many dynamic analysis tools rely on program instrumentation and are implemented using low-level instrumentation libraries, resulting in tedious and error-prone tool development. Targeting this issue, we have created the Domain-Spec...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 1997